1. Field of the Invention
The present invention generally relates to the art of computers, and more specifically to a controller for the ARC/INFO.RTM. geographic information system (GIS) and similar computer software programs which enables command line (TTY) control using a keyboard and graphic user interface (GUI) control using a mouse or keyboard without manual switching by the user.
2. Description of the Related Art
ARC/INFO.RTM. is a mapping and geographic information system (GIS) computer software program which is commercially available from Environmental Systems Research Institute (ESRI), Inc. of Redlands, Calif. ARC/INFO is used to compose and present maps overlaid with geographic and other information in the forms of alphanumeric characters and icons. A comprehensive introduction to ARC/INFO is presented in a promotional brochure entitled "ARC/INFO.RTM.: GIS Today and Tomorrow", ESRI WHITE PAPER SERIES, Environmental Research Institute, Inc., September 1992.
ARC/INFO is provided with a graphic user interface (GUI) and a toolkit which enables custom windows and menus to be created by the user for semi-automated execution of specific applications using a mouse or other pointing device, or a keyboard.
The general configuration of ARC/INFO.RTM. in its stand-alone form as installed for use in a general purpose computer is illustrated in FIG. 1. A computer system 10 includes a computer 12 which preferably runs under the UNIX.RTM. operating system in a standard X-windows environment, although the invention is not so limited. The computer 12 includes a keyboard 20, mouse 22 and video display monitor 24.
The computer system 10 further includes a program software system 16, which includes a conventional X-server 18 for controlling input, output and display operations for the keyboard 20, mouse 22 and monitor 24.
The software system 16 further includes a terminal emulator 26 for processing command line (TTY) inputs from the keyboard 20 under control of the X-server 18 and feeding them to the ARC/INFO system program which is designated as 28. The X-server 18 directs graphic control (GUI) inputs from the mouse 22 and keyboard 20 to the program 28, and feeds display outputs from the program 28 to the monitor 24.
Although the system 10 including ARC/INFO in its stand-alone form enables both TTY control using the keyboard 20 and GUI control using the mouse 22, it must be manually switched back and forth between these two modes of control. Switching from TTY to GUI control requires manually issuing a command from the keyboard 20, whereas switching from GUI to TTY control requires manually clicking on a display icon using the mouse 22 or a pressing a key on the keyboard 20.
This is major problem in an application in which a user program periodically generates data for display by the system 28 on the monitor 24. Although the user program can automatically apply the data to the TTY control input, it is necessary for the user to manually switch from GUI to TTY control to enable the program to update the display.
Especially in an application in which the user must make rapid decisions based on the information displayed by the system 10, requiring the user to manually perform such a low level task as manually updating the monitor display is unacceptable.
The reason that the ARC/INFO program 28 in its stand-alone form requires manual switching between TTY and GUI control is illustrated in FIGS. 2a to 2c. The ARC/INFO program 28 supports multiple threads of control operations, as indicated at 30, 32 and 34. Each thread 30, 32 and 34 can have a stack of suspended operations (TTY interpreters, GUI windows or menus) in it. ARC/INFO threads are similar to UNIX processes in that the UNIX operating system schedules processes while ARC/INFO schedules threads.
Each thread 30, 32 and 34 can also include ARC/INFO macro language (AML) operations. The AML operations launch specific tasks or functions in the system 28 which can be customized using the ARC/INFO toolkit.
In FIG. 2a, the threads 30, 32 and 34 all have GUI operations at their tops which do not have any precedence over each other, and are assigned a priority of "0". The order in which these operations are scheduled is determined by the scheduler in the ARC/INFO program 28 and input received from the mouse 22 and keyboard 20.
FIG. 2b illustrates an AML operation at the top of the thread 30, and GUI operations at the tops of the threads 32 and 34. An AML operation takes precedence over a GUI operation and is assigned a priority of "1". The AML operation in the thread 30 will therefore be scheduled ahead of the GUI operations in the threads 32 and 34. The GUI operations will not be scheduled until all threads are in the context of a GUI operation.
FIG. 2c illustrates an AML operation at the top of the thread 30, a TTY operation at the top of the thread 32 and a GUI operation at the top of the thread 34. A TTY operation takes precedence over both AML and GUI operations, and is assigned a priority of "2". The TTY operation in the thread 32 will therefore be scheduled ahead of the AML operation in the thread 30, which in turn is ahead of the GUI operation in the thread 34.
If a TTY operation is at the top of a thread, it will be scheduled and will not relinquish control to any other thread until it returns (is popped off the thread and returns to the operation that called it), or suspends itself by pushing a GUI operation on top of itself on its own thread. Thus, while a TTY operation is at the top of a thread, no GUI or AML operations on the tops of any other threads will be scheduled.
If the ARC/INFO system 28 is under control of a GUI operation at the top of a thread, switching to TTY control must be triggered by a manual input that causes a TTY operation to become the current operation at the top of some thread.